package es.qb.deportivos.il.domain;

import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.HashSet;

public class EquipoAlgoritmo implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private HashSet<Jugador> hasJugador;

	private Double dPuntuacion;

	/**
	 * @return the hasJugador
	 */
	public HashSet<Jugador> getHasJugador() {
		return hasJugador;
	}

	/**
	 * @param hasJugador
	 *            the hasJugador to set
	 */
	public void setHasJugador(HashSet<Jugador> hasJugador) {
		this.hasJugador = hasJugador;
	}

	/**
	 * @return the dPuntuacion
	 */
	public Double getdPuntuacion() {
		return dPuntuacion;
	}

	/**
	 * @param dPuntuacion
	 *            the dPuntuacion to set
	 */
	public void setdPuntuacion(Double dPuntuacion) {
		this.dPuntuacion = dPuntuacion;
	}

	@Override
	public String toString() {

		String salida = "Equipo: ";

		for (Jugador objJugador : this.hasJugador) {

			salida += objJugador.toString() + ",";
		}

		NumberFormat formatter = new DecimalFormat("#0.00");
		salida += " Puntos: " + formatter.format(damePuntosEquipo());

		return salida;
	}

	@Override
	public boolean equals(Object obj) {

		EquipoAlgoritmo objEquipo = (EquipoAlgoritmo) obj;

		Boolean isIgual = Boolean.TRUE;

		for (Jugador objJugador : objEquipo.getHasJugador()) {

			if (!this.getHasJugador().contains(objJugador)) {

				isIgual = Boolean.FALSE;
			}
		}

		return isIgual.booleanValue();

	}

	public Double damePuntosEquipo() {

		Double dPuntos = 0D;

		for (Jugador objJugador : this.getHasJugador()) {

			dPuntos += objJugador.getValoracionMedia();
		}

		return dPuntos;

	}

}
